package com.spring.demo4.factory;

import java.lang.annotation.*;

/**
 * 使用步骤：
 * 1.将@lmport标注在类上，设置value参数
 * 2.将@lmport标注的类作为AnnotationConfigApplicationContext构造参数创建AnnotationConfigApplicationContext对象
 * 3.使用AnnotationConfigApplicationContext对象
 */
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyImport {
    // 一个Class数组，设置需要导入的类，可以是@Configuration标注的类，
    // 可以是ImportSelector接口和ImportBeanDefinitionRegistrar接口类型的，或者需要导入的普通组件类
    Class<?>[] value();

    /*
      value常见的5种用法：
         1. value为普通的类
         2. value为@Configuration标注的类
         3. value为@CompontentScan标注的类
         4. value为ImportBeanDefinitionRegistrar接口类型
         5. value为ImportSelector接口类型
         6. value为DeferredImportSelector接口类型
     */
}
